﻿#region Copyright Notice
// This file is part of GestionPedago.
// <description>
// Copyright (C) 2012 ENI Ecole Informatique
// 
// GestionPedago is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// <program> is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GestionPedago.Services.ES;

namespace GestionPedago.Services
{
    /// <summary>
    /// Façade des services de l'application.
    /// </summary>
    public class FacadeServices
    {
        /// <summary>
        ///  Instance de la facade de services
        /// </summary>
        private static FacadeServices facade;

        /// <summary>
        /// Constructeur privé
        /// </summary>
        private FacadeServices() { }

        /// <summary>
        /// Retourne l'instance de la facade
        /// </summary>
        public static FacadeServices GetInstance()
        {
            if (facade == null)
            {
                facade = new FacadeServices();
            }

            return facade;
        }

        // Ci-après la liste des méthodes de récupération des services fournis par la facade

        /// <summary>
        /// Service RechercherStagiaires
        /// </summary>
        public RechercherStagiairesOut RechercherStagiaires(RechercherStagiairesIn paramEntree)
        {
            return RechercherStagiairesService.GetInstance().Execute(paramEntree);
        }



        /// <summary>
        /// Service RechercherListeECF
        /// </summary>
        public RechercherListeECFOut RechercherListeECF(RechercherListeECFIn paramEntree)
        {
            return RechercherListeECFService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererAppreciations
        /// </summary>
        public RecupererAppreciationsOut RecupererAppreciations(RecupererAppreciationsIn paramEntree) {
            return RecupererAppreciationsService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererRegions
        /// </summary>
        public RecupererRegionsOut RecupererRegions()
        {
            return RecupererRegionsService.GetInstance().Execute(null);
        }

        /// <summary>
        /// Service RecupererRegions
        /// </summary>
        public RecupererPromotionsOut RecupererPromotions(RecupererPromotionsIn paramEntree)
        {
            return RecupererPromotionsService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererEntreprises
        /// </summary>
        public RecupererEntreprisesOut RecupererEntreprises(RecupererEntreprisesIn paramEntree)
        {
            return RecupererEntreprisesService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererFormateurs
        /// </summary>
        public RecupererFormateursOut RecupererFormateurs(RecupererFormateursIn paramEntree)
        {
            return RecupererFormateursService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RechercherListeEvtPedagogiques
        /// </summary>
        public RechercherListeEvtPedagogiquesOut RechercherListeEvtPedagogiques(RechercherListeEvtPedagogiquesIn paramEntree)
        {
            return RechercherListeEvtPedagogiquesService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RechercherListeIntervenants
        /// </summary>
        public RechercherListeIntervenantsOut RechercherListeIntervenants(RechercherListeIntervenantsIn paramEntree)
        {
            return RechercherListeIntervenantsService.GetInstance().Execute(paramEntree);
        }


        /// <summary>
        /// Service RecupererPlanningECF
        /// </summary>
        public RecupererPlanningECFOut RecupererPlanningECF(RecupererPlanningECFIn paramEntree)
        {
            return RecupererPlanningECFService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererPlanningECFDetail
        /// </summary>
        public RecupererPlanningECFDetailOut RecupererPlanningECFDetail(RecupererPlanningECFDetailIn paramEntree)
        {
            return RecupererPlanningECFDetailService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service PlanifierPlanningECF
        /// </summary>
        public PlanifierPlanningECFOut PlanifierPlanningECF(PlanifierPlanningECFIn paramEntree)
        {
            return PlanifierPlanningECFService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service PlanifierPlanningECFDetail
        /// </summary>
        public PlanifierPlanningECFDetailOut PlanifierPlanningECFDetail(PlanifierPlanningECFDetailIn paramEntree)
        {
            return PlanifierPlanningECFDetailService.GetInstance().Execute(paramEntree);
        }


        /// <summary>
        /// Service RecupererModules
        /// </summary>
        public RecupererModulesOut RecupererModules(RecupererModulesIn paramEntree)
        {
            return RecupererModulesService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererCompetences
        /// </summary>
        public RecupererCompetencesOut RecupererCompetences(RecupererCompetencesIn paramEntree)
        {
            return RecupererCompetencesService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererActivites
        /// </summary>
        public RecupererActivitesOut RecupererActivites(RecupererActivitesIn paramEntree)
        {
            return RecupererActivitesService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererPlanningECFDetailByPlanningECF
        /// </summary>
        public RecupererPlanningECFDetailByPlanningECFOut RecupererPlanningECFDetailByPlanningECF(RecupererPlanningECFDetailByPlanningECFIn paramEntree)
        {
            return RecupererPlanningECFDetailByPlanningECFService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service AfficherResultats
        /// </summary>
        public AfficherResultatsOut AfficherResultats(AfficherResultatsIn paramEntree)
        {
            return AfficherResultatsService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service EnregistrerECF
        /// </summary>
        public EnregistrerECFOut EnregistrerECF(EnregistrerECFIn paramEntree)
        {
            return EnregistrerECFService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service SupprimerECF
        /// </summary>
        public SupprimerECFOut SupprimerECF(SupprimerECFIn paramEntree)
        {
            return SupprimerECFService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererListeTypeEvenement
        /// </summary>
        public RecupererListeTypeEvenementOut RecupererListeTypeEvenement(RecupererListeTypeEvenementIn paramEntree)
        {
            return RecupererListeTypeEvenementService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererTitres
        /// </summary>
        public RecupererTitresOut RecupererTitres(RecupererTitresIn paramEntree)
        {
            return RecupererTitresService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererActivitesGestionTitres
        /// </summary>
        public RecupererActivitesGestionTitresOut RecupererActivitesGestionTitres(RecupererActivitesGestionTitresIn paramEntree)
        {
            return RecupererActivitesGestionTitresService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererCompetencesGestionTitres
        /// </summary>
        public RecupererCompetencesGestionTitresOut RecupererCompetencesGestionTitres(RecupererCompetencesGestionTitresIn paramEntree)
        {
            return RecupererCompetencesGestionTitresService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service EnregistrerActivite
        /// </summary>
        public EnregistrerActiviteOut EnregistrerActivite(EnregistrerActiviteIn paramEntree)
        {
            return EnregistrerActiviteService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service EnregistrerCompetence
        /// </summary>
        public EnregistrerCompetenceOut EnregistrerCompetence(EnregistrerCompetenceIn paramEntree)
        {
            return EnregistrerCompetenceService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service EnregistrerTitre
        /// </summary>
        public EnregistrerTitreOut EnregistrerTitre(EnregistrerTitreIn paramEntree)
        {
            return EnregistrerTitreService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererStagiaire
        /// </summary>
        public RecupererStagiaireOut RecupererStagiaire(RecupererStagiaireIn paramEntree)
        {
            return RecupererStagiaireService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererListeContact
        /// </summary>
        public RecupererListeContactOut RecupererListeContact(RecupererListeContactIn paramEntree)
        {
            return RecupererListeContactService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service SupprimerActivite
        /// </summary>
        public SupprimerActiviteOut SupprimerActivite(SupprimerActiviteIn paramEntree)
        {
            return SupprimerActiviteService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service SupprimerCompetence
        /// </summary>
        public SupprimerCompetenceOut SupprimerCompetence(SupprimerCompetenceIn paramEntree)
        {
            return SupprimerCompetenceService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service EnregistrerEvenement
        /// </summary>
        public EnregistrerEvenementOut EnregistrerEvenement(EnregistrerEvenementIn paramEntree)
        {
            return EnregistrerEvenementService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service SupprimerEvenement
        /// </summary>
        public SupprimerEvenementOut SupprimerEvenement(SupprimerEvenementIn paramEntree)
        {
            return SupprimerEvenementService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RechercherListeAlertes
        /// </summary>
        public RechercherListeAlertesOut RechercherListeAlertes(RechercherListeAlertesIn paramEntree)
        {
            return RechercherListeAlertesService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service EnregistrerAlerte
        /// </summary>
        public EnregistrerAlerteOut EnregistrerAlerte(EnregistrerAlerteIn paramEntree) 
        {
            return EnregistrerAlerteService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererVersionsECF
        /// </summary>
        public RecupererVersionsECFOut RecupererVersionsECF(RecupererVersionsECFIn paramEntree)
        {
            return RecupererVersionsECFService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service EnregistrerAppreciation
        /// </summary>
        public EnregistrerAppreciationOut EnregistrerAppreciation(EnregistrerAppreciationIn paramEntree)
        {
            return EnregistrerAppreciationService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service SupprimerAppreciation
        /// </summary>
        public SupprimerAppreciationOut SupprimerAppreciation(SupprimerAppreciationIn paramEntree) {
            return SupprimerAppreciationService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service RecupererValidationCompetences
        /// </summary>
        public RecupererValidationCompetencesOut RecupererValidationCompetences(RecupererValidationCompetencesIn paramEntree) {
            return RecupererValidationCompetencesService.GetInstance().Execute(paramEntree);
        }

        /// <summary>
        /// Service EnregistrerValidationCompetence
        /// </summary>
        public EnregistrerValidationCompetenceOut EnregistrerValidationCompetence(EnregistrerValidationCompetenceIn paramEntree) {
            return EnregistrerValidationCompetenceService.GetInstance().Execute(paramEntree);
        }
    }
}
